package chapter8.section6;

import java.util.*;

/**
 * 程序 8-9b 利用排序集合保存实现了排序接口的 MyAccount1 对象
 */

class MyAccount1 implements Comparable<MyAccount1> {
    private final String id; // 用户唯一的ID
    private final String name;// 用户名称
    private final int balance;// 当前余额

    public MyAccount1(String id, String name, int balance) {
        super();
        this.id = id;
        this.name = name;
        this.balance = balance;
    }

    public String getId() {
        return id;
    }

    @Override
    public int compareTo(MyAccount1 o) {
        // 利用字符串的 compareTo 方法作为账户 id 的大小比较算法，并作为返回结果。
        // return this.id.compareTo(o.getId());
        // 利用 账户余额 数字 大小比较算法，并作为返回结果。
         return this.balance < o.balance ? 1 : -1;
    }

    // 打印
    @Override
    public String toString() {
        return "MyAccount1[id:" + id + ", name:" + name + ", balance:" + balance + "]";
    }
}

public class MySortedAccountRoster1 {
    public static void main(String[] args) {

        List<MyAccount1> list = new ArrayList<>();
        list.add(new MyAccount1("001", "张三", 3000));
        list.add(new MyAccount1("003", "李四", 1000));
        list.add(new MyAccount1("002", "王五", 2000));
        System.out.println("--列出当前所有的账户，注意输出顺序和添加时的顺序--");
        
        // 1. 使用Collections.sort进行默认排序
        Collections.sort(list);

        for (MyAccount1 account : list) {
            System.out.println(account);
        }
    }
}
